No estás describiendo la escala de ajuste; estás describiendo el aspecto de ajuste. (He editado tu pregunta a este respecto.) La subvista se hace tan grande como sea posible manteniendo su relación de aspecto y encajando completamente dentro de su padre.
De todos modos, se puede hacer esto con la disposición automática. Puedes hacerlo completamente en IB a partir de Xcode 5.1. Vamos a empezar con algunas vistas:
La vista verde claro tiene una relación de aspecto de 4:1. La vista verde oscuro tiene una relación de aspecto de 1:4. Voy a establecer restricciones para que la vista azul llene la mitad superior de la pantalla, la vista rosa llene la mitad inferior de la pantalla, y cada vista verde se expanda tanto como sea posible manteniendo su relación de aspecto y encajando en su contenedor.
Primero, crearé restricciones en los cuatro lados de la vista azul. Lo fijaré a su vecino más cercano en cada borde, con una distancia de 0. Me aseguro de desactivar los márgenes:
Obsérvese que I no actualizar el marco todavía. Me resulta más fácil dejar espacio entre las vistas cuando se establecen las restricciones, y simplemente establecer las constantes a 0 (o lo que sea) a mano.
A continuación, fijo los bordes izquierdo, inferior y derecho de la vista rosa a su vecino más cercano. No necesito establecer una restricción de borde superior porque su borde superior ya está restringido al borde inferior de la vista azul.
También necesito una restricción de alturas iguales entre las vistas rosa y azul. Esto hará que cada una llene la mitad de la pantalla:
Si le digo a Xcode que actualice todos los cuadros ahora, obtengo esto:
Así que las restricciones que he establecido hasta ahora son correctas. Deshago esto y empiezo a trabajar en la vista verde claro.
El ajuste de aspecto de la vista verde claro requiere cinco restricciones:
- Una restricción de relación de aspecto de prioridad requerida en la vista verde claro. Puedes crear esta restricción en un xib o storyboard con Xcode 5.1 o posterior.
- Una restricción de prioridad requerida que limita el ancho de la vista verde claro para que sea menor o igual que el ancho de su contenedor.
- Una restricción de alta prioridad que establece que la anchura de la vista verde claro sea igual a la anchura de su contenedor.
- Una restricción de prioridad requerida que limita la altura de la vista verde claro para que sea menor o igual a la altura de su contenedor.
- Una restricción de alta prioridad que establece que la altura de la vista verde claro sea igual a la altura de su contenedor.
Consideremos las dos restricciones de anchura. La restricción de menos que o igual, por sí misma, no es suficiente para determinar el ancho de la vista verde claro; muchos anchos se ajustarán a la restricción. Como hay ambigüedad, el autolayout tratará de elegir una solución que minimice el error en la otra restricción (de alta prioridad pero no requerida). Minimizar el error significa hacer que el ancho sea lo más cercano posible al ancho del contenedor, sin violar la restricción requerida de menos que o igual.
Lo mismo ocurre con la restricción de altura. Y como la restricción de relación de aspecto también es necesaria, sólo puede maximizar el tamaño de la subvista a lo largo de un eje (a menos que el contenedor tenga la misma relación de aspecto que la subvista).
Así que primero creo la restricción de la relación de aspecto:
Luego creo restricciones de anchura y altura iguales con el contenedor:
Necesito editar estas restricciones para que sean restricciones de menor a igual:
A continuación tengo que crear otro conjunto de restricciones de anchura y altura iguales con el contenedor:
Y tengo que hacer que estas nuevas restricciones sean menos prioritarias que las requeridas:
Por último, has pedido que la subvista esté centrada en su contenedor, así que voy a establecer esas restricciones:
Ahora, para probar, seleccionaré el controlador de vista y pediré a Xcode que actualice todos los fotogramas. Esto es lo que obtengo:
¡Uy! La subvista se ha expandido hasta llenar completamente su contenedor. Si la selecciono, puedo ver que de hecho ha mantenido su relación de aspecto, pero está haciendo un aspecto- llenar en lugar de un aspecto- encajar .
El problema es que en una restricción de menos-que-igual, importa qué vista está en cada extremo de la restricción, y Xcode ha configurado la restricción al contrario de lo que esperaba. Podría seleccionar cada una de las dos restricciones e invertir sus primeros y segundos elementos. En lugar de eso, sólo seleccionaré la subvista y cambiaré las restricciones para que sean mayores que o iguales:
Xcode actualiza el diseño:
Ahora hago todo lo mismo con la vista verde oscura de la parte inferior. Tengo que asegurarme de que su relación de aspecto es 1:4 (Xcode la redimensionó de forma extraña ya que no tenía restricciones). No voy a mostrar los pasos de nuevo ya que son los mismos. Aquí está el resultado:
Ahora puedo ejecutarlo en el simulador del iPhone 4S, que tiene un tamaño de pantalla diferente al utilizado por IB, y probar la rotación:
Y puedo probarlo en el simulador del iPhone 6:
He subido mi storyboard final a este punto de vista para su comodidad.